dynamic programming 백준 17485, 진우의 달 여행 (Large) - DP 출발 지점 -> 각 지점으로의 최소 비용 값을 DP 배열에 채워나감 3가지 이동 방향: 왼쪽 아래, 아래, 오른쪽 아래 ex) (3, 5) 지점을 이전 지점으로부터 [왼쪽 아래] 방향으로 이동했을 때, 연료 최소값 1) DP 배열 정의: int[][][] dp dp[i][j][k]: 시작 지점 -> [i][j] 지점까지 이전 윗 행의 지점으로부터 k의 방향으로 이동한 최소 비용 k: 0, 1... DP알고리즘dynamic programming동적 계획법코딩 테스트백준 17485 진우의 달 여행 (Large)DP 백준 1082, 방 번호 - DP, Greedy, 문자열 1) DP 배열 정의: String[] dp dp[cost]: cost원 금액 내로 만들 수 있는 최대 숫자 문자열 출력, 최대 숫자: BigInteger(dp[m]) => dp[] 원소에 Leading-Zero 문자열이 저장될 수 있으므로, BigInteger를 이용하여 Leading-Zero 문자열을 제거 BigInteger 클래스 int, long 범위를 넘어가는 매우 큰 정수를 사용,... DPString백준 1082 방 번호알고리즘그리디greedydynamic programming동적 계획법코딩 테스트DP 백준 1106, 호텔 - DP 적어도 c명 영업 => c명, c+1명, ..., c+100명 (입력: 1개 도시에서 x원으로 영업하는 최대 고객 수 = 100명) => c명, c+1명, ..., c+100명 늘리는 최소 금액에서 최소값 적어도 i명(i <= 입력 c)을 늘리기 위한 최소 금액 => i명, i+1명, ..., c+100명 늘리는 최소 금액에서 최소값 dp[i]: 고객을 i명 만큼 늘릴 때, 최소 비용 출력,... DP알고리즘knapsack problem0-1 Knapsack Problemdynamic programming동적 계획법백준 1106 호텔코딩 테스트0-1 Knapsack Problem 백준 14722, 우유 도시 - DP 우유 순서: 딸기(0) -> 초코(1) -> 바나나(2) 최근에 마신 우유 종류에 따라 => "최근 마신 우유 종류를 구분"하여, DP 배열을 채움 1) DP 배열 정의: int[][][] dp dp[i][j][k]: [i][j] 지점까지 가장 최근에 k 우유를 마셨을 때, 마신 최대 우유 개수 (우유 종류 k: 딸기 0, 초코 1, 바나나 2) 출력, 최대 우유 개수 = dp[n-1][n-... DP알고리즘dynamic programming동적 계획법백준 14722 우유 도시코딩 테스트DP 백준 1520, 내리막 길 - DFS, DP, 메모이제이션 dp[y][x]: 시작 지점 [0][0] -> [y][x] 지점으로 내리막 길로 가는 경로 개수 dp[y][x] = 0 이면, 해당 [y][x]로 내리막 길로 갈 수 없음 출력 값 h = dp[m-1][n-1] DFS + DP 현재 지점 [y][x]가 끝 지점이면, DFS 탐색 종료 dp[y][x]: [y][x] 지점 -> 끝 지점으로 내리막 길로 가는 경로 개수 현재 지점 [y][x]에 대... DPDFS알고리즘그래프 탐색depth first search메모이제이션dynamic programming동적 계획법백준 1520 내리막 길깊이 우선 탐색memoization코딩 테스트DFS [BOJ] 2758 로또 아이디어 처음에 Back Tracking으로 구현해서 시간 초과 발생함. n by m matrix 만들고 n번째 자리에 m이 놓일 수 있는 경우의 수를 담았다. 틀렸습니다 dp[][]와 cnt를 실수형 double로 선언해서 틀렸다. 출력이 몇 개인지 묻는 것이므로 정수형 long으로 변경하여 해결함.... 코딩테스트baekjoondynamic programmingbaekjoon [BOJ] 14002 가장 긴 증가하는 부분 수열 4 아이디어 며칠 전에 [11054] 가장 긴 바이토닉 부분 수열 문제를 풀어서 해당 문제는 쉽게 해결하였다. 수열 출력은 뒤에서부터 max, max-1, max-2, ..., 1 번째 해당하는 값을 담은 후 거꾸로 출력하였다. Stack으로 해도 될 듯.... 코딩테스트baekjoondynamic programmingbaekjoon 백준 9095번 1,2,3 더하기 문제 풀이 1이 먼저올 때 2가 먼저올 때 3이 먼저올 때 의 각각의 경우의 수를 더해준다... dynamic programming백준알고리즘dynamic programming [BOJ] 2xn 타일링 2 (no.11727) 문제 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 🤔 생각 언제나 그렇듯 케이스를 나누자. 잔재주보단 케이스 완벽분할에 집중... pythondynamic programmingalgorithmbojalgorithm [ BOJ / C++ ] 13398번 연속합 2 파이썬으로 풀어봤던 코드를 C++로 다시 한번 풀어보았다. 파이썬 코드와 같은 방식으로 풀이하였기 때문에 설명은 생략한다.... dynamic programmingDPbojcppDP BOJ :: 스티커 (no.9465) 상근이의 여동생 상냥이는 문방구에서 스티커 2n개를 구매했다. 스티커는 그림 (a)와 같이 2행 n열로 배치되어 있다. 스티커 한 장을 떼면, 그 스티커와 변을 공유하는 스티커는 모두 찢어져서 사용할 수 없게 된다. 즉, 뗀 스티커의 왼쪽, 오른쪽, 위, 아래에 있는 스티커는 사용할 수 없게 된다. 모든 스티커를 붙일 수 없게된 상냥이는 각 스티커에 점수를 매기고, 점수의 합이 최대가 되게 ... pythondynamic programmingalgorithmbojalgorithm [프로그래머스/파이썬] (동적계획법(Dynamic Programming)) 도둑질 문제 설명 도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다. 각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한 두 집을 털면 경보가 울립니다. 각 집에 있는 돈이 담긴 배열 money가 주어질 때, 도둑이 훔칠 수 있는 돈의 최댓값을 return 하도록 solution 함수를 작성하세요. 제한사항 이 마을에... dynamic programming코테pythonprogrammers프로그래머스카카오코딩테스트코딩파이썬coding test카카오코테코딩테스트도둑질coding test [백준]9095 문제 풀이... dynamic programmingalgorithmalgorithm [BOJ] 11726 - 2xn 타일링 Java 풀이 가로의 길이가 n인 타일은 n - 1의 타일짜리에 세로 타일 하나를 붙인 것이거나 n - 2 타일짜리에 가로 타일 2개를 붙인 것과 같기 때문이었다. 즉, 이전에 풀었던 부분문제의 결과를 다시 풀어야 하고, 이것은 메모이제이션 기법으로 저장해두고 꺼내서 쓰면 효율을 높일 수 있다. 이러한 문제들은 전형적인 다이나믹 프로그래밍 문제의 특징이라고 볼 수 있다. 또한 TMI인데, 다이나믹 프로그래... dynamic programmingbojJavaalgorithmcoding testJava 최대 점수 구하기 : Dynamic Programming (냅색 알고리즘) 문제와 유사하게 풀 수 있다. 하지만 결정적인 차이는 '중복'해서 사용할 수 있느냐 인데, 이를 고려하지 않고 풀어서 잘못된 풀이가 나왔다! 나름 한참 고민해서 푼 풀이인데...ㅋㅋ (심지어 답도 맞게 나옴) 중복을 고려하지 않은 틀린 풀이이다. 아무리 고민을 했어도 거꾸로 for문을 돌리는 아이디어 는 생각을 못했을 것 같다. 풀이를 보고도 이해가 안되서 종이에 한참 그려보면서 이해를 했다... dynamic programmingjavascript 알고리즘dynamic programming [Python] 백준 1106 - 호텔 문제 풀이 BOJ 1106번 호텔 Python 문제 풀이 분류: Dynamic Programming (동적계획법) 다이나믹 프로그래밍을 이용하여 dp에 고객 i명이 늘어날 때 최소 비용을 저장한다. 그리고 적어도 c명의 고객이 늘어나기 위한 최소 비용을 구하기 위해 dp의 인덱스 c 이후 값 중에서 최소값을 구한다.... dynamic programmingdynamic programming
백준 17485, 진우의 달 여행 (Large) - DP 출발 지점 -> 각 지점으로의 최소 비용 값을 DP 배열에 채워나감 3가지 이동 방향: 왼쪽 아래, 아래, 오른쪽 아래 ex) (3, 5) 지점을 이전 지점으로부터 [왼쪽 아래] 방향으로 이동했을 때, 연료 최소값 1) DP 배열 정의: int[][][] dp dp[i][j][k]: 시작 지점 -> [i][j] 지점까지 이전 윗 행의 지점으로부터 k의 방향으로 이동한 최소 비용 k: 0, 1... DP알고리즘dynamic programming동적 계획법코딩 테스트백준 17485 진우의 달 여행 (Large)DP 백준 1082, 방 번호 - DP, Greedy, 문자열 1) DP 배열 정의: String[] dp dp[cost]: cost원 금액 내로 만들 수 있는 최대 숫자 문자열 출력, 최대 숫자: BigInteger(dp[m]) => dp[] 원소에 Leading-Zero 문자열이 저장될 수 있으므로, BigInteger를 이용하여 Leading-Zero 문자열을 제거 BigInteger 클래스 int, long 범위를 넘어가는 매우 큰 정수를 사용,... DPString백준 1082 방 번호알고리즘그리디greedydynamic programming동적 계획법코딩 테스트DP 백준 1106, 호텔 - DP 적어도 c명 영업 => c명, c+1명, ..., c+100명 (입력: 1개 도시에서 x원으로 영업하는 최대 고객 수 = 100명) => c명, c+1명, ..., c+100명 늘리는 최소 금액에서 최소값 적어도 i명(i <= 입력 c)을 늘리기 위한 최소 금액 => i명, i+1명, ..., c+100명 늘리는 최소 금액에서 최소값 dp[i]: 고객을 i명 만큼 늘릴 때, 최소 비용 출력,... DP알고리즘knapsack problem0-1 Knapsack Problemdynamic programming동적 계획법백준 1106 호텔코딩 테스트0-1 Knapsack Problem 백준 14722, 우유 도시 - DP 우유 순서: 딸기(0) -> 초코(1) -> 바나나(2) 최근에 마신 우유 종류에 따라 => "최근 마신 우유 종류를 구분"하여, DP 배열을 채움 1) DP 배열 정의: int[][][] dp dp[i][j][k]: [i][j] 지점까지 가장 최근에 k 우유를 마셨을 때, 마신 최대 우유 개수 (우유 종류 k: 딸기 0, 초코 1, 바나나 2) 출력, 최대 우유 개수 = dp[n-1][n-... DP알고리즘dynamic programming동적 계획법백준 14722 우유 도시코딩 테스트DP 백준 1520, 내리막 길 - DFS, DP, 메모이제이션 dp[y][x]: 시작 지점 [0][0] -> [y][x] 지점으로 내리막 길로 가는 경로 개수 dp[y][x] = 0 이면, 해당 [y][x]로 내리막 길로 갈 수 없음 출력 값 h = dp[m-1][n-1] DFS + DP 현재 지점 [y][x]가 끝 지점이면, DFS 탐색 종료 dp[y][x]: [y][x] 지점 -> 끝 지점으로 내리막 길로 가는 경로 개수 현재 지점 [y][x]에 대... DPDFS알고리즘그래프 탐색depth first search메모이제이션dynamic programming동적 계획법백준 1520 내리막 길깊이 우선 탐색memoization코딩 테스트DFS [BOJ] 2758 로또 아이디어 처음에 Back Tracking으로 구현해서 시간 초과 발생함. n by m matrix 만들고 n번째 자리에 m이 놓일 수 있는 경우의 수를 담았다. 틀렸습니다 dp[][]와 cnt를 실수형 double로 선언해서 틀렸다. 출력이 몇 개인지 묻는 것이므로 정수형 long으로 변경하여 해결함.... 코딩테스트baekjoondynamic programmingbaekjoon [BOJ] 14002 가장 긴 증가하는 부분 수열 4 아이디어 며칠 전에 [11054] 가장 긴 바이토닉 부분 수열 문제를 풀어서 해당 문제는 쉽게 해결하였다. 수열 출력은 뒤에서부터 max, max-1, max-2, ..., 1 번째 해당하는 값을 담은 후 거꾸로 출력하였다. Stack으로 해도 될 듯.... 코딩테스트baekjoondynamic programmingbaekjoon 백준 9095번 1,2,3 더하기 문제 풀이 1이 먼저올 때 2가 먼저올 때 3이 먼저올 때 의 각각의 경우의 수를 더해준다... dynamic programming백준알고리즘dynamic programming [BOJ] 2xn 타일링 2 (no.11727) 문제 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 🤔 생각 언제나 그렇듯 케이스를 나누자. 잔재주보단 케이스 완벽분할에 집중... pythondynamic programmingalgorithmbojalgorithm [ BOJ / C++ ] 13398번 연속합 2 파이썬으로 풀어봤던 코드를 C++로 다시 한번 풀어보았다. 파이썬 코드와 같은 방식으로 풀이하였기 때문에 설명은 생략한다.... dynamic programmingDPbojcppDP BOJ :: 스티커 (no.9465) 상근이의 여동생 상냥이는 문방구에서 스티커 2n개를 구매했다. 스티커는 그림 (a)와 같이 2행 n열로 배치되어 있다. 스티커 한 장을 떼면, 그 스티커와 변을 공유하는 스티커는 모두 찢어져서 사용할 수 없게 된다. 즉, 뗀 스티커의 왼쪽, 오른쪽, 위, 아래에 있는 스티커는 사용할 수 없게 된다. 모든 스티커를 붙일 수 없게된 상냥이는 각 스티커에 점수를 매기고, 점수의 합이 최대가 되게 ... pythondynamic programmingalgorithmbojalgorithm [프로그래머스/파이썬] (동적계획법(Dynamic Programming)) 도둑질 문제 설명 도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다. 각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한 두 집을 털면 경보가 울립니다. 각 집에 있는 돈이 담긴 배열 money가 주어질 때, 도둑이 훔칠 수 있는 돈의 최댓값을 return 하도록 solution 함수를 작성하세요. 제한사항 이 마을에... dynamic programming코테pythonprogrammers프로그래머스카카오코딩테스트코딩파이썬coding test카카오코테코딩테스트도둑질coding test [백준]9095 문제 풀이... dynamic programmingalgorithmalgorithm [BOJ] 11726 - 2xn 타일링 Java 풀이 가로의 길이가 n인 타일은 n - 1의 타일짜리에 세로 타일 하나를 붙인 것이거나 n - 2 타일짜리에 가로 타일 2개를 붙인 것과 같기 때문이었다. 즉, 이전에 풀었던 부분문제의 결과를 다시 풀어야 하고, 이것은 메모이제이션 기법으로 저장해두고 꺼내서 쓰면 효율을 높일 수 있다. 이러한 문제들은 전형적인 다이나믹 프로그래밍 문제의 특징이라고 볼 수 있다. 또한 TMI인데, 다이나믹 프로그래... dynamic programmingbojJavaalgorithmcoding testJava 최대 점수 구하기 : Dynamic Programming (냅색 알고리즘) 문제와 유사하게 풀 수 있다. 하지만 결정적인 차이는 '중복'해서 사용할 수 있느냐 인데, 이를 고려하지 않고 풀어서 잘못된 풀이가 나왔다! 나름 한참 고민해서 푼 풀이인데...ㅋㅋ (심지어 답도 맞게 나옴) 중복을 고려하지 않은 틀린 풀이이다. 아무리 고민을 했어도 거꾸로 for문을 돌리는 아이디어 는 생각을 못했을 것 같다. 풀이를 보고도 이해가 안되서 종이에 한참 그려보면서 이해를 했다... dynamic programmingjavascript 알고리즘dynamic programming [Python] 백준 1106 - 호텔 문제 풀이 BOJ 1106번 호텔 Python 문제 풀이 분류: Dynamic Programming (동적계획법) 다이나믹 프로그래밍을 이용하여 dp에 고객 i명이 늘어날 때 최소 비용을 저장한다. 그리고 적어도 c명의 고객이 늘어나기 위한 최소 비용을 구하기 위해 dp의 인덱스 c 이후 값 중에서 최소값을 구한다.... dynamic programmingdynamic programming